Trucs linux
Commandes UNIX
mon éditeur de texte préféré : vim
Bon je vais pas en faire son apologie mais avec lui on découvre de nouvelles astuces tous les jours (vi improved).
Je vais simplement mettre quelques raccourcis pratiques tant pour le tous les jours que pour des utilisations spécifiques.
Je par du principe que vous avez installez le paquet vim-full qui contient entre autre vimtutor pour bien commencer.
Il ne reste plus qu'à bouquiner l'aide de vim pour aller plus loin.
liens
les frontends graphiques
- vim pour les nuls : evim (easy vim)
- vim simplement : gvim
déplacement
- début de ligne : [^]
- fin de ligne : [$]
- début de fichier : [gg]
- Fin de fichier : [G]
insertion/remplacement
- insertion : [i]
- derrière le curseur : [a]
- début de ligne : [gI]
- fin de ligne : [A]
- ligne au-dessus : [O]
- ligne au-dessous : [o]
- ajouter x tabulations : x[>>]
- supprimer x tabulations : x[<<]
- remplacer x caractères : x + [r]
- remplacer : [touche inser] ou [R]
- remplacer le caractère actuel : [s]
- remplacer la ligne actuelle : [S]
- défaire : [u]
- refaire : [Ctrl] + [r]
couper, copier, coller
- couper x lignes : x[dd]
- copier x : x[yy]
- couper x mots : [d]x[w]
- copier x mots : [y]x[w]
- coller avant ou après le curseur : [p] ou [P]
chercher/remplacer
- recherche après le curseur : [/]regex
- recherche avant le curseur : [?]regex
- se balader dans la recherche : [n] ou [N]
- sed : remplacement ligne courante (fonctionne en mode visuel) : [:s/regex_recherchée/remplacement/gi]
- sed : remplacement sur la totalité du fichier : [:%s/regex_recherchée/remplacement/gi]
- recherche du mot identique après le curseur : [*]
mode visuel [v]
- mode visuel standard : [v]
- mode visuel ligne : [Maj] + [v]
- mode visuel bloc : [Ctrl] + [v]
- copie de la sélection : [y]
- coupe/supprime la sélection : [d]
- ajout/suppression de tabulations : [>>] ou [<<]
mode Explore
- Parmi la fulltitude de fonctions que contient vim, la navigation dans votre système de fichier est bien pratique
- dossier supérieur : [-]
- éditer le fichier ou se déplacer dans le dossier sous le curseur : [Enter]
- idem avec un split horizontal : [o]
- idem avec un split vertical : [v]
- idem dans un nouvel onglet : [t]
- prévisualisation du fichier : [p]
- marquer des fichiers / dossiers : [mf]
- marquer tous les fichiers / dossiers correspondants à une regexp : [mr] puis entrer la regexp
- imprimer les fichiers marqués : [mp]
- tous désélectionner : [mu]
- exécuter une commande sur tous les fichiers marqués : [mx] puis commande
- vim . et [F1] pour plus d'options
complétion
- des mots se trouvant dans votre fichier actuel et séparés par des espaces, des points, slash, ... : [Ctrl] + [p] ou [Ctrl] + [n]
- des fichiers : [Ctrl] + [x], [Ctrl] + [f] et [Ctrl] + [n] ou [p]
- python (affiche les choix et split l'écran pour l'aide) : [Ctrl] + [x], [Ctrl] + [o] puis [Ctrl] + [n] ou [p]
onglets
- nouvel onglet : [:tabnew] ou [:tabnew fichier]
- onglet suivant : [:tabnext] ou [Ctrl] + [pg down]
- onglet précédant : [:tablast] ou [Ctrl] + [pg up]
split
- split vertical (nouveau fichier) : :[vne]
- split vertical (même fichier) : [Ctrl] + [w], [Ctrl] + [v]
- split horizontal (nouveau fichier) : [Ctrl] + [w], [Ctrl] + [n] | :[new] | :[split]
- split horizontal (même fichier) : [Ctrl] + [w], [Ctrl] + [s]
- switch d'une fenêtre à l'autre : [Ctrl] + [w], [Ctrl] + [w]
- rotation des splits ouvert : [Ctrl] + [w], [Ctrl] + [r|R|x]
divers
- ouverture d'un fichier : [:e nom_du_fichier]
- activation de la coloration syntaxique : [:syntax on]
- changement de colorscheme : [:colorscheme slate]
- adapter son colorscheme à son environnement : [:set background=dark|light]
- quitter tout : [:qa]
- quitter et sauver : [:x] ou [:wq]
- quitter sans sauver : [:q!]
- ouverture d'un shell : [:sh] (le quitter avec [Ctrl] + [d])
- agrandir reduire la taille du texte : [Ctrl] + [-] ou [+]
- répète la dernière commande : [.]
- ...
Terminal
Les raccourcis utiles du terminal:
- Nouvel onglet : Ctrl + Maj + t
- Début de ligne : Ctrl + a
- Fin de ligne : Ctrl + e
- Effacer le dernier mot : Ctrl + w
- Effacer toute la ligne : Ctrl + u
- Navigation dans les dernières commandes : ↓ ↑
- Recherche : Ctrl + r (répéter l'opération pour retrouver les commandes précédentes)
- Inversion des 2 derniers caractères : Ctrl + t
- Coller la sélection : Maj + inser ou Clic droit ou Clic bouton du milieu ou Clic simultané gauche et droit
- Completion : Tabulation
- Afficher les différentes solutions : Tabulation Tabulation
- Avorte le processus courant : Ctrl + z
- Processus au premier plan : fg
- Kill processus : Ctrl + c
- Deconnexion : Ctrl + d
Terminator
split
Horizontal
- split horizontal : [Ctrl]+[maj]+[o]
- resize horizontal : [Ctrl]+[maj]+[↓]|[↑]
Vertical
- split vertical : [Ctrl]+[maj]+[e]
- resize vertical : [Ctrl]+[maj]+[←]|[→]
- preview screen : [Ctrl]+[maj]+[p]
- next screen : [Ctrl]+[maj]+[n]
- switch between split : [Ctrl]+[Tab]
Tab
- new tab : [Ctrl]+[maj]+[t]
Outils
- search : [Ctrl]+[maj]+[f]
- zoom le split courant : [Ctrl]+[maj]+[z]
Configuration
- fichier .config/terminator/config
# terminator config file # aspect #font = Monospace 8 background_type = "transparent" enable_real_transparency = True use_theme_colors = False background_darkness = 0.9 background_color = "#000000" foreground_color = "#FFFFFF" borderless = True maximise = True extreme_tabs = False mouse_autohide = False word_chars = "-A-Za-z0-9,./?&_+@~" # nb de lignes enregistrées scrollback_lines = 2000 scrollbar_position = "disabled" # flash lors des erreurs de frappe audible_bell = False # suppression des bips force_no_bell = True # pas de curseur clignotant cursor_blink = False [keybindings] # ne pas interférer avec le déplacement dans les onglets de vim next_tab = <Ctrl>Down prev_tab = <Ctrl>Up
conky
- Conky permet d'intégrer sur son bureau un moniteur système.
- conky site
configuration
# file ~/.conkyrc alignment top_right background no border_width 0 cpu_avg_samples 2 default_color white default_outline_color white default_shade_color white draw_borders no draw_graph_borders yes draw_outline no draw_shades no use_xft yes xftfont DejaVu Sans Mono:size=10 gap_x 5 gap_y 7 minimum_size 5 5 net_avg_samples 2 # no_buffers yes double_buffer yes out_to_console no out_to_stderr no own_window yes own_window_transparent yes own_window_class Conky own_window_type desktop own_window_hints below,skip_taskbar,skip_pager,sticky stippled_borders 0 update_interval 1.0 uppercase no use_spacer none show_graph_scale no show_graph_range no TEXT ${color lightblue}$nodename - $sysname $kernel on $machine ${color white}$hr ${color lightblue}Battery: ${color white}${battery BAT0} - ${battery_time BAT0} ${battery_bar 10 BAT0} ${color white}$hr ${color lightblue}Uptime:$color $uptime ${color lightblue}RAM Usage:$color $mem/$memmax - $memperc% ${membar 6} ${color lightblue}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 6} ${color white}$hr ${color white}CPU Usage (core0):$color ${cpu cpu0}% ${cpubar cpu0 6} ${color white} ${cpugraph cpu0 20,310 ffffff 000fff} ${color white}CPU Usage (core1):$color ${cpu cpu1}% ${cpubar cpu1 6} ${color white} ${cpugraph cpu1 20,310 ffffff 000fff} $hr ${color lightblue}File systems: ${color white} / $color${fs_used /}/${fs_size /} ${fs_bar 6 /} /home $color${fs_used /home}/${fs_size /home} ${fs_bar 6 /home} $hr ${color lightblue}Networking: Up:$color ${upspeed eth0} ${color lightblue}Down:$color ${downspeed eth0} ${color white}${downspeedgraph eth0 30,160 ffffff 000fff} ${color white}${upspeedgraph eth0 30,160 ffffff fff000} ${color white}$hr ${color lightblue}loadavg: ${color white}${execi 1 cat /proc/loadavg} ${color lightblue}Name PID CPU% MEM% ${color lightblue} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1} ${color lightblue} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2} ${color lightblue} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3} ${color lightblue} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
Zsh : le shell alternatif
- Zsh offre des fonction de complétion avancées.
Concernant l'UTF-8, 16, 32 préféré une version beta supérieure à 4.3.1 zsh-beta- Sur une ubuntu 9.04 zsh est en version 4.3.9
- On en profitera pour mettre des couleurs à less
fichier ~/.zshrc
# prompt shell export PS1="$(print '%{\e[3;32m%}%m%{\e[0m%}'):$(print '%{\e[1;33m%}%~%{\e[0m%}')" if [ $USER = "root" ] ; then export PS1="$PS1%# " else export PS1="$PS1%% " fi # inscription des info dans la barre de titre des terminaux case $TERM in rxvt|*term) precmd() { print -Pn "\e]0;%n@%m:%~\a" } preexec () { print -Pn "\e]0;$1\a" } ;; screen) bindkey "^[[1;5C" forward-word bindkey "^[[1;5D" backward-word bindkey "^E" end-of-line bindkey "^R" history-incremental-search-backward ;; esac # historique export HISTFILE=~/.histfile export SAVEHIST=5000 export HISTSIZE=5000 setopt HIST_REDUCE_BLANKS # suppression des doublons inutiles setopt HIST_SAVE_NO_DUPS # ne sauvegarde pas les doublons setopt SHARE_HISTORY # partage instantanee des historiques # alias . ~/.bash_aliases # ls eval "`dircolors -b`" # less export LESS="-rIg" export LESSOPEN='| /usr/bin/lesspipe %s' export LESSCLOSE='/usr/bin/lesspipe %s %s' # Less Colors for Man Pages export LESS_TERMCAP_mb=$'\E[01;32m' # begin blinking export LESS_TERMCAP_md=$'\E[03;32m' # begin bold export LESS_TERMCAP_me=$'\E[0m' # end mode export LESS_TERMCAP_se=$'\E[0m' # end standout-mode export LESS_TERMCAP_so=$'\E[01;42m' # begin standout-mode - info box export LESS_TERMCAP_ue=$'\E[0m' # end underline export LESS_TERMCAP_us=$'\E[04;37m' # begin underline # inscription des info dans la barre de titre des terminaux case $TERM in rxvt|*term) precmd() { print -Pn "\e]0;%n@%m:%~\a" } preexec () { print -Pn "\e]0;$1\a" } ;; esac # Completion of hostnames, pulled out of ~/.ssh/config. _myhosts=($(cat ~/.ssh/config | sed -ne 's/Host[=\t ]//p')) zstyle ':completion:*' hosts ${_myhosts[1, -2]} # Slices off the last entry # case-insensitive (uppercase from lowercase) completion zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # process completion zstyle ':completion:*:processes' command 'ps -au$USER' zstyle ':completion:*:*:kill:*:processes' list-colors "=(#b) #([0-9]#)*=36=31" # zstyle zstyle ':completion:*' completer _expand _complete _ignored _approximate zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} zstyle ':completion:*' menu select=2 zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s' zstyle ':completion:*:descriptions' format '%U%F{yellow}%d%f%u' zstyle :compinstall filename '/home/user/.zshrc' autoload -Uz compinit autoload colors compinit
Problème debian screen
En tant que root lors de recherche sur les précédentes commandes le curseur revient en début de ligne.
file /etc/zsh/zshenv
[...] if [[ $TERM == "screen" ]] ; then setopt noglobalrcs fi
Problème avec les touches suppr, début, fin, Ctrl + ←|→
- utiliser le script zkbd pour les codes qui créait un fichier sous le dossier ~/.zkbd
user:~% zsh -f /usr/share/zsh/4.3.10/functions/Misc/zkbd
- vous pourrez ensuite récupérer les codes qui vous interesse pour compléter votre .zshrc
[...] typeset -g -A key key[Insert]='^[[2~' key[Home]='^[OH' key[PageUp]='^[[5~' key[Delete]='^[[3~' key[End]='^[OF' key[PageDown]='^[[6~' bindkey "${key[Insert]}" overwrite-mode bindkey "${key[Home]}" beginning-of-line bindkey "${key[Delete]}" delete-char bindkey "${key[End]}" end-of-line bindkey ";5C" forward-word bindkey ";5D" backward-word [...]
- Pour plus de détails :
- Z shell
- man zshall
screen
fichier ~/.screenrc
# general autodetach on # visual bell vbell on # scrollback history defscrollback 5000 # status bar hardstatus alwayslastline "%{= k}%{+ y}%w%{-}%=%{+ b}load:%l%{-}%=%{+ y}%D %d/%m/%Y %c%{-}" # keys bindkey -k k1 prev bindkey -k k2 next # tabs screen -t htop htop screen -t logs multitail /var/log/messages /var/log/syslog dcreen -t procinfo procinfo -dn2 screen -t user1 screen -t user2 su - user2
commandes
Les commandes de base :
- Lancement d'un nouveau screen : screen
- Lister les screen en cours : screen -ls
- Réattache le dernier screen (ou liste si > 1) : screen -r
Les commandes qui suivent sont à taper dans un screen :
- Détacher le screen : Ctrl + a puis d
- Nouveau shell dans le même screen : Ctrl + a puis Ctrl + c
- Switch dans les shell d'un screen : Ctrl + a puis [0-9]
- ou : Ctrl + a puis ' puis nom du shell ou # du shell
- ou : Ctrl + a puis n ou : Ctrl + a puis p
- Where are you : Ctrl + a puis N
- Liste des shell du screen en cours : Ctrl + a puis "
- ou : Ctrl + a puis w
- Renommer le shell en cours : Ctrl + a puis A
- Split : Ctrl + a puis S
- Changement de région : Ctrl + a puis TAB
- Tuer la région : Ctrl + a puis X
- Nouveau shell dans le même screen : Ctrl + a puis Ctrl + c
watch
- watch permet d'afficher une commande à interval régulier, et entre autre de mettre en surbrillance les différences
# exemple $ watch -d -n 2 date
- En voilà une commande qu'elle est sympathique :)
procinfo
- procinfo permet pour ~40ko d'avoir les informations nécessaire du filesystem /proc
# example avec la v2.0 $ procinfo -bHn1
Redirection dans un pts
- On utilisera la commande script
# sur la machine distante riri:~$ w rdeniro pts/1 :0.0 12:54 5:36m 0.08s 0.08s /bin/bash riri pts/2 :0.0 17:17 2:39m 0.14s 0.04s ssh riri@machine riri:~$ script -c uptime -f /dev/pts/1 Le script a débuté, le fichier est /dev/pts/1 18:35:57 up 6:15, 4 users, load average: 0.06, 0.04, 0.00 Script complélé, le fichier est /dev/pts/1 # localement sur pts/1 robert verra : rdeniro:~$ Le script complété sur dim. 26 Avril 2009 00:00:00 CEST 18:35:57 up 6:15, 4 users, load average: 0.06, 0.04, 0.00 Script complélé sur dim. 26 Avril 2009 00:00:10 CEST
console redirection
BIOS
Si il est possible dans les options de votre BIOS, utilisez la redirection vers le port série.
command line
- redirection des info du noyau sur COM1
Ajoutez à la ligne du kernel l'argument console
root (hd0,0) kernel /vmlinuz26 root=/dev/mapper/main-root ro quiet vga=30 nomodeset console=tty0 console=ttyS0,115200n8 initrd /kernel26.img
- le premier conserve la sortie vers le tuyau principale
- le deuxième redirige sur le port série COM1 à 115200bps sans bit de parité et en 8 bits
- redirection de grub sur COM1
[...] serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 terminal --timeout=5 console serial [...]
/etc/inittab
- redirection du prompt sur COM1
[...] T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100 [...]
liens externes
- http://www.faqs.org/docs/Linux-HOWTO/Remote-Serial-Console-HOWTO.html
- http://www.vanemery.com/Linux/Serial/serial-console.html
Infos système
Alternatives aux cat /proc/cpuinfo et compagnies lshw avec les options -html ou -xml ou encore -short Aida n'a qu'à bien se tenir.
- dmidecode
# dmidecode -t dmidecode: option requires an argument -- t Type number or keyword expected Valid type keywords are: bios system baseboard chassis processor memory cache connector slot
- lspci
- lsusb
- lshw
Un man vous en expliquera plus que moi, sinon je vous en laisse deux ou trois sympathiques :
# lshw -class disk -class volume -short # lshw -html > `hostname`.html && firefox `hostname`.html
Les touches multimedia
- Sous gnome:
Bureau > Préférences > Raccourcis clavier (ou gnome-keybinding-properties)
Vous devriez trouver facilement des touches non définies.
Vous pouvez également les modifier avec gconf-editor
Voici les chemins: ~/.gconf/apps/metacity/global_keybindings ~/.gconf/apps/metacity/window_keybindings ~/.gconf/apps/gnome_settings_daemon/keybindings
- En utilisant Xmodmap:
Vous pouvez utiliser xev pour retrouver les keycodes correspondant aux actions, puis à l'aide de /usr/share/X11/XKeysymDB vous pourrez aisément compléter /etc/X11/Xmodmap.
Voici les touches du volume : keycode 160 = XF86AudioMute keycode 174 = XF86AudioLowerVolume keycode 176 = XF86AudioRaiseVolume
Encodage
- Informations sur le type et l'encodage de votre fichier :
$ file fichier
- Convertir des noms de fichiers venant de zindozs par exemple :
$ convmv -r --nosmart --notest -f iso-8859-1 -t utf8 *
- Convertir des fichiers venant de zindozs par exemple :
$ iconv -f iso-8859-1 -t utf8 file.iso -o file.utf8
- Pour plus de précision cet article est complet.
Conversions
HTML > WIKI
- Convertir des pages HTML au format wiki (mediawiki, pmwiki, moinmoin, ...)
$ sudo apt-get install libhtml-wikiconverter-perl $ html2wiki --dialect mediawiki file.html > file.wiki
HTML <> text
- Convertir du texte HTML en texte et vice versa o_O
$ recode UTF-8..HTML /tmp/index.html
PDF > HTML
- Conversion d'un fichier PDF en fichier HTML
$ pdftohtml file.pdf file.html
liens mailto firefox
- Dans firefox vous pouvez faire que les liens du type mailto: pointe sur gmail ou yahoo facilement. Mais vous pouvez également paramétrer un webmail différent :
configuration
- Dans votre barre d'adresse : about:config (puis une recherche sur mailto)
gecko.handlerService.schemes.mailto.2.name=webmail du boulot gecko.handlerService.schemes.mailto.2.uriTemplate=http://example.org/squirrelmail/src/mailto.php?emailaddress=%s
- Pour que les modifications prennent effet incrémentez la valeur de la clef qui suit
gecko.handlerService.defaultHandlersVersion=2
- Redémarrez firefox
- Dans le choix des préférences, onglet application, mailto vous trouverez votre nouvelle entrée.
documentation
- dans votre barre d'adresse : chrome://browser-region/locale/region.properties (puis une recherche sur mailto)
Recherche sur le site http://www.commandlinefu.com/
- Ajouter cette fonction dans votre .bashrc ou .bash_aliases
[...] # command line fu search function clfu-search() { wget -q -O /dev/stdout --post-data "q=$1" http://www.commandlinefu.com/search/autocomplete | \ grep "class=\"autocomplete-command\"" | \ sed -e 's/^.*<strong>\(.*\)<\/strong>/\1/' -e 's/<\/div>//' | sort -u } [...]
- Utilisation
user@machine:~# clfu-search find find . -name "*.[ch]" -exec grep -i -H "search pharse" {} \; find . -name "*.php" -exec iconv -f ISO-8859-1 -t UTF-8 {} -o ../newdir_utf8/{} \; find ~ -name '*.sqlite' -exec sqlite3 '{}' 'VACUUM;' \; find /path/to/dir -type f -print0 | xargs -0 rm find * -type d -exec mkdir /where/you/wantem/\{\} \; find ./ -type f -exec chmod 644 {} \; user@machine:~#